////
//#include <iostream>
//
//using namespace std;
////C++标准库设计的string类
////模拟类的设计者（类库、别人设计的类、自己设计的类）
////======================================
////模拟用（使用类的人）
//
//int main(void) {
//    string s1("Hello");//s1维护的字符串为“Hello”
//    cout << "s1:" << s1 << endl;
//
//    //如果在做初始化，并且“="两边类型完全一样，那么=xxx和（xxx）无差别
//    string s2(s1);// =s1; //s2维护的字符串和s1维护的字符串内容相同 定义s2，利用s2.string(s1) --s2维护的字符串和s1维护的字符串内容相同
//    cout << "s2:" << s2 << endl;
//    string s3;//s3维护的字符串为空串
//    cout << "s3被赋值前:" << s3 << endl;
//    //如果在做赋值，并且"="两边类型完全一致，将触发operator=函数的调用
//    s3 = s2;//触发operator=（s2）-->s3维护的字符串和s2维护的字符串内容相同
//    cout << "s3被赋值后:" << s3 << endl;
//
//    //无论初始化还是赋值只要"="两边类型不一致，编译器首先要做类型转换操作
//    string s4 = "Hello";//定义匿名string类对象，利用匿名string类对象.string("Hello")--》匿名string类对象维护的字符串的内容为"Hello"
//                        //string s4 = 匿名string类对象;==>s4维护的字符串和匿名string类对象维护的字符串内容相同
//                        //-->s4维护的字符串内容为"Hello"
//    cout << "s4:" << s4 << endl;
//
//    string s5;//s5维护的字符串内容为空串
//    s5 = "Hello";//定义匿名string类对象，利用匿名string类对象.string("Hello")-->匿名string类对象维护的字符串内容为"Hello"
//                //s5=匿名string类对象
//    cout << "s5: " << s5 << endl;
//    return 0;
//}